/*
 * @lc app=leetcode.cn id=82 lang=javascript
 *
 * [82] 删除排序链表中的重复元素 II
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
// var deleteDuplicates = function(head) {
//   if(!head) return null;
//   let ret = new ListNode(-1, head);
//   let pre = ret, cur = head;
//   while(cur && cur.next) {
//     if(cur.next.val !== pre.next.val){
//       cur = cur.next;
//       pre = pre.next;
//     } else {
//       while(cur && cur.next && cur.next.val === pre.next.val){
//         cur = cur.next;
//       }
//       pre.next = cur.next;
//       cur = cur.next;
//     }
//   }
//   return ret.next;
// };

/**
 * 复习 2021-08-04
 */
var deleteDuplicates = function(head) {
  if(!head) return null;
  let ret = new ListNode(null, head);
  let pre = ret, next = head;

  while(next && next.next){
    if(pre.next.val != next.next.val){
      pre = pre.next;
    } else {
      while(next.next && next.next.val === pre.next.val){
        next = next.next;
      }
      pre.next = next.next;
    }
    next = next.next;
  }
  return ret.next;
}
// @lc code=end

